home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / util / text / megaed12.lha / MegaEdV1_2 / Trans / Aztec_Linker.trans.c < prev    next >
C/C++ Source or Header  |  1995-02-18  |  2KB  |  97 lines

  1. /*
  2. ** MCPP.trans: Konvertiert Maxon C Fehlerdateien für MegaEd
  3. ** von M-J, 100% PD
  4. */
  5.  
  6. #include <exec/memory.h>
  7. #include <dos/dos.h>
  8. #include <dos/dostags.h>
  9. #include <string.h>
  10.  
  11. void main(void)
  12. {
  13.  const char *file1="T:MegaEdMake-ErrFile";
  14.  const char *file2="T:MegaEdMake-Errors";
  15.  const char lc[]="Linker complete";
  16.  BPTR con;
  17.  BPTR fileh;
  18.  char *old=NULL,*new=NULL;
  19.  char *off, *off2, *dest, *warn, *last;
  20.  LONG len;
  21.  short i;
  22.  BOOL meldung=FALSE;
  23.                              //MCPP Datei lesen
  24.  if(!(fileh=Open(file1,MODE_OLDFILE))) return;
  25.  Seek(fileh,0,OFFSET_END);
  26.  len=Seek(fileh,0,OFFSET_BEGINNING);
  27.  if(len)
  28.  {
  29.   if(!(old=(char*)AllocVec(len+1,MEMF_PUBLIC)))
  30.    {Close(fileh); return;}
  31.   if(Read(fileh,old,len)!=len)
  32.    {FreeVec(old); Close(fileh); return;}
  33.  }
  34.  Close(fileh);
  35.  if(!len) return;
  36.  old[len]=0;
  37.                             // Konvertierung
  38.  if(!(new=(char*)AllocVec(len+1,MEMF_PUBLIC))) return;
  39.  
  40.  off=old;
  41.  dest=new;
  42.  if(!(off=strchr(off,10))) goto esc;
  43.  off++;
  44.  
  45.  for(;;)
  46.  {
  47.   if(!(off2=strchr(off,10))) break;
  48.   *off2=0;
  49.             // Text
  50.   if(!(off2=strchr(off,10)))
  51.    off2=strchr(off,0);
  52.   *off2=0;
  53.   if(!strncmp(off,lc,strlen(lc)))
  54.   {
  55.    for(;*off;off++)
  56.     if(isdigit(*off)) break;
  57.    if(!*off) break;
  58.    *dest='S'; dest++;
  59.    strcpy(dest,off);
  60.    dest+=strlen(dest);
  61.    *dest=10;
  62.    last=dest+1;
  63.    meldung=TRUE;
  64.    break;
  65.   }
  66.  
  67.   off+=strlen(off)+1;
  68.   if(!(off2=strchr(off,10)))
  69.    off2=strchr(off,0);
  70.   *off2=0;
  71.  
  72.   meldung=TRUE;
  73.   strcpy(dest,off);
  74.   off+=strlen(off)+1;
  75.   dest+=strlen(dest);
  76.   *dest=10;
  77.   dest++;
  78.   last=dest;
  79.  
  80.   if(!*off) break;
  81.  }
  82.  esc:
  83.  if(meldung)
  84.  {
  85.   if(fileh=Open(file2,MODE_NEWFILE))
  86.   {
  87.    len=(LONG)last-(LONG)new;
  88.    Write(fileh,new,len);
  89.    Close(fileh);
  90.   }
  91.  }
  92.  else DeleteFile(file2);
  93.  if(old) FreeVec(old);
  94.  if(new) FreeVec(new);
  95. }
  96.  
  97.